/**
 * Created by 王涛 on 2017/6/9.
 */

$(function () {
    // 日历限制最大可选日期为当日  start
    var date = new Date();

    function formatDate(date) {
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        m = m < 10 ? '0' + m : m;
        var d = date.getDate();
        d = d < 10 ? ('0' + d) : d;
        return y + '-' + m + '-' + d;
    };

    $('.datepicker').datepicker({
        endDate: formatDate(date)
    });// 日历限制最大可选日期为当日  end

    $('#side-menu li.caseList').addClass('active');//更改导航列表选中样式
    // 病历列表请求函数 start
    var caseListUrl = '/manage/record/list';     //病历列表数据
    function getCaseList(d) {
        ajaxGet(caseListUrl, d, function (data) {
            if (data.code === 10000) {
                var str = '';
                if (data.data.length > 0) {
                    $.each(data.data, function (i, v) {
                        //佩戴状态:0-开始,1-结束,-1不是动态用户
                        if (v.wear_status == 0) {
                            $wear = '<img src="../images/wear.png">';
                        } else if (v.wear_status == 1) {
                            $wear = '<img  src="../images/wearing.png">';
                        } else {
                            $wear = '';
                        }
                        var medNumber='';
                        if(v.hospitals[0]!=undefined){
                            medNumber='<td data-medicalnum='+JSON.stringify(v.medical_number)+' class="printTd medical_number">' + (v.medical_number[(v.hospitals[0].hospital_id)]? v.medical_number[v.hospitals[0].hospital_id].medical_number : '') + '</td>' //病案号放开

                        }else{
                            medNumber= '<td data-medicalnum='+JSON.stringify(v.medical_number)+' class="printTd medical_number"></td>' //病案号放开

                        }
                        str += '<tr><td class="name-td printTd">' +
                            '<span>' + v.name + '</span>' +
                            $wear +
                            '</td><td class="printTd">' + v.sex.value + '</td><td class="printTd">' + v.age + '</td>' +
                            '<td class="printTd">' + v.phone + '</td>' +
                            medNumber+
                            '<td class="printTd">' + v.diabetes_type.value + '</td>' +
                            // '<td class="printTd">' + v.first_visit + '</td>' +//首诊时间暂时不要
                            '<td class="text-left hospital_td"><select class="visit_hospital text-left" name="visit_hospital">';
                        $.each(v.hospitals,function(k,v){
                            str+='<option value="' + v.hospital_id + '">' + v.name + '</option>'
                        });

                        str += '</select></td><td class="visit-type"><select name="visit_type" data-opation="[';

                        // 隐藏域的opation⬇
                        for (var j = 0; j < v.records.length; j++) {
                            str += "{hospital_id:"+v.records[j].hospital_id+
                                ",record_id:" + v.records[j].id +
                                ",data_type:" + v.records[j].visit_type.key +
                                ",value:'" + v.records[j].visit_type.value + v.records[j].clinic_at+
                                "'},";
                        }
                        str+=']">';
                        for (var j = 0; j < v.records.length; j++) {
                            // if (j === 0) {
                            if(v.hospitals[0]!=undefined){
                                if(v.hospitals[0].hospital_id==v.records[j].hospital_id){
                                    str += '<option name="'+v.records[j].hospital_id+'" value="' + v.records[j].id + '" data-type="' + v.records[j].visit_type.key + '" >' + v.records[j].visit_type.value + v.records[j].clinic_at + '</option>';

                                }
                            }

                            //display：none  opation => 在safari浏览器兼容问题
                            // else{
                            //     str += '<option style="display: none" name="'+v.records[j].hospital_id+'" value="' + v.records[j].id + '" data-type="' + v.records[j].visit_type.key + '">' + v.records[j].visit_type.value + v.records[j].clinic_at + '</option>';
                            // };

                            // } else {
                            //     str += '<option name="'+v.records[j].hospital_id+'" value="' + v.records[j].id + '" data-type="' + v.records[j].visit_type.key + '">' + v.records[j].visit_type.value + v.records[j].clinic_at + '</option>';
                            // }
                        }

                        str += '</select></td><td>' +
                            // '<a href="javascript:;" class="viewBlood" data-id="'+v.id+'">点击查看血糖</a></td><td>' +
                            '<button class="viewBlood btn btn-outline btn-primary margin-right-5 margin-bottom-5 margin-top-5 " data-id="' + v.id + '">指尖</button>' +
                            '<button class="dynamicBlood btn btn-outline btn-danger margin-right-5 margin-bottom-5 margin-top-5" data-id="' + v.id + '">动态</button></td><td>' +
                            '<button type="button" class="btn btn-outline btn-primary margin-right-5 margin-bottom-5 margin-top-5 addVisitCase" data-patient="' + v.id + '">添加复诊</button>' +
                            '<button type="button" class="btn btn-outline btn-danger margin-right-5 margin-bottom-5 margin-top-5 editCase" data-patient="' + v.id + '">修改病历</button>' +
                            '<button type="button" class="btn btn-outline btn-warning margin-right-5 margin-bottom-5 margin-top-5 printCase" data-patient="' + v.id + '" data-toggle="modal" data-target="#printModel">查看打印</button>';
                        // if (window.HospitalAuth.indexOf('reservation') != -1) {
                        //     str += '<button type="button" class="btn btn-outline btn-info margin-right-5 margin-bottom-5 margin-top-5 addReservation" data-patient="' + v.id + '">添加预约</button>';
                        // }
                        if ( v.auth == 1) {
                            str += '<button type="button" class="btn btn-outline btn-info margin-right-5 margin-bottom-5 margin-top-5 addReservation" data-patient="' + v.id + '">添加预约</button>';
                        }

                        // if ($("#USERTYPE").val()== 'western') {
                        //     str += '<button type="button" class="btn btn-outline btn-info margin-right-5 margin-bottom-5 margin-top-5 addReservation" data-patient="' + v.id + '">添加预约</button>';
                        // }

                        if ($("#UserType").val() == '4') {
                            str += '<button type="button" class="btn btn-outline btn-danger margin-right-5 margin-bottom-5 margin-top-5 deleteCase" data-patient="' + v.id + '">删除</button>';
                        }
                        str += '</td></tr>';
                    });
                    $('#caseListBox').html(str);
                    hospitalChange();
                    $('.deleteCase').click(function(){
                        "use strict";
                        deleteCase($(this).parents('tr').find("select[name='visit_type']").val());
                    });

                }
                // 页码
                $('#pager').parent().next().html('共 ' + data.meta.pagination.total + ' 患者 | 共 ' + data.meta.all_count + ' 个病历 | 共 ' + data.meta.pagination.total_pages + ' 页');
                if (data.meta.pagination.total_pages > 1) {
                    page('pager', data.meta, getCaseList, caseListData);
                } else {
                    $('#pager').html('');
                }
                //当点击分页时，需要让滚动条置顶；
                window.scrollTo(0, 0);
            } else if (data.code === 40001) {
                $('#pager').parent().next().html('');
                $('#caseListBox').html('<tr><td colspan="10" class="emptyTd">暂无病历</td></tr>');
                $('#pager').html('');
            } else if (data.code === 40100) {

                //此处模仿退出按钮，调用事件
                //跳转
                window.location.pathname = "/manage/auth/logout";
                //清除缓存
                sessionStorage.clear();
                localStorage.clear();
            }
        }, function (x, t, e) {
            if (x.status != 422) {
                $.alert({
                    title: '温馨提示',
                    body: '出错了！',
                    transition: true
                });
            }
        })
    }
    /* 切换医院 联动修改'就诊情况' + 病案号 */
    function hospitalChange(){
        "use strict";

        // v14 初始化 检测医院是否为改登陆者可操作的医院⬇
        $.each($(".visit_hospital"),function(){
            /* v14 通过切换医院从而控制 '修改病历'  和 '添加复诊' 按钮是否可以点击⬇  */
            //切换医院时 登录身份本省所属医院的病例可以修改或添加，其他医院不可操作（平台管理员除外）；
            if(window.User.type!=0) {//平台管理员除外
                if ($(this).val() != window.User.hospital.id) {
                    $(this).parents('tr').find(".editCase").attr('disabled', 'disabled');
                    $(this).parents('tr').find(".addVisitCase").attr('disabled', 'disabled');
                } else {
                    $(this).parents('tr').find(".editCase").removeAttr('disabled');
                    $(this).parents('tr').find(".addVisitCase").removeAttr('disabled');
                }

            }
            /* v14 通过切换医院从而控制 '修改病历'  和 '添加复诊' 按钮是否可以点击⬆  */
        });

        $(".visit_hospital").unbind().bind('change',function(){
            var visitSelect=$(this).parents('td.hospital_td').siblings("td.visit-type").find("select");
            var arr=eval(visitSelect.attr("data-opation"));
            var self=$(this);
            var Newhtml='';

            $.each(arr,function(k,v){
                if(self.val()==v.hospital_id){
                    Newhtml += '<option name="'+v.hospital_id+'" value="' + v.record_id + '" data-type="' + v.data_type + '" >' + v.value + '</option>';
                }
            });
            visitSelect.html(Newhtml);
            // 病案号切换
            var $medicalNum = $(this).parents('td.hospital_td').siblings("td.medical_number");
            var $numsArr=JSON.parse($medicalNum.attr("data-medicalnum"));
            var newMedicalNumHtml = '';

            $.each($numsArr,function(k,v){
                if(self.val()== k){
                    newMedicalNumHtml = v.medical_number;
                }
            });
            $medicalNum.html(newMedicalNumHtml);

            visitSelect.find('option').hide();
            visitSelect.find('option[name="'+$(this).val()+'"]').show();

            /* v14 通过切换医院从而控制 '修改病历'  和 '添加复诊' 按钮是否可以点击⬇  */
            //切换医院时 登录身份本省所属医院的病例可以修改或添加，其他医院不可操作（平台管理员除外）；

            if(window.User.hospital.id!=0) {//平台管理员除外
                if ($(this).val() != window.User.hospital.id) {
                    $(this).parents('tr').find(".editCase").attr('disabled', 'disabled');
                    $(this).parents('tr').find(".addVisitCase").attr('disabled', 'disabled');
                } else {
                    $(this).parents('tr').find(".editCase").removeAttr('disabled');
                    $(this).parents('tr').find(".addVisitCase").removeAttr('disabled');
                }

            }
            /* v14 通过切换医院从而控制 '修改病历'  和 '添加复诊' 按钮是否可以点击⬆  */

        });
    };




    //删除病例
    function deleteCase(record_id){
        "use strict";
        confirmModel('','确定要删除吗？','','',function(){
            ajaxPost('/manage/record/del', {record_id:record_id}, function(data){
                if(data.code == 10000){
                    // $('#doctorManagementSearchBtn').click();
                    alertModel('','删除成功！');
                    // window.location.reload();
                    getCaseList(caseListData);
                }else if(data.code === 40100){
                    aClick();
                }else {
                    alertModel('','删除失败，'+data.message);
                }
            }, function(){ })
        });
    }



    // 页面加载完请求所有病历列表
    var caseListData = { //存储请求列表所需要的数据
        name: '',
        phone: '',
        medical_number: '',
        clinic_at: '',
        diabetes_stage: $('#diabetes_stage').val(),
        page: 1,
        randomNumber: parseInt(Math.random() * 100000)
    };
    var patientPhone = sessionStorage.getItem('patientPhone');
    if (patientPhone) {
        caseListData.phone = patientPhone;
        $('#search_param input.phoneLength').val(patientPhone);
        // setTimeout(function(){
        //     $("#caseListSearch").click();
        // },100)
    }
    getCaseList(caseListData);
    // 病历列表请求函数 end

    //列表  添加预约 点击按钮  start
    $('table.caseList-table').delegate('button.addReservation', 'click', function () {
        window.location.href = '/reserve/create/' + $(this).attr('data-patient');
    });
    //列表  添加预约 点击按钮  end

    // 添加复诊 点击按钮  start
    $('#caseListBox').delegate('.addVisitCase', 'click', function () {
        var patientId = $(this).attr('data-patient');   //获取病人id
        sessionStorage.removeItem('tabPage');
        sessionStorage.removeItem('record_id');
        sessionStorage.setItem('patient_id', patientId);
        var link = $('#visit_case').val();
        window.location.href = link+'?patient_id='+patientId;
    });
    // 添加复诊 点击按钮  end

    // 编辑病历 点击按钮  start
    $('#caseListBox').delegate('.editCase', 'click', function () {

        sessionStorage.removeItem('tabPage');
        var patientId = $(this).attr('data-patient');   //获取病人id
        var editRecordId = $(this).parent().parent().find('.visit-type select').val();  //获取要修改的病历ID
        var visitType = $(this).parent().parent().find('.visit-type select').find('option:selected').attr('data-type');  //获取要修改的是首诊  复诊  中医首诊 还是中医复诊
        sessionStorage.setItem('patient_id', patientId);
        sessionStorage.setItem('record_id', editRecordId);
        var firstLink = $('#first_case').val();
        var visitLink = $('#visit_case').val();
        if (visitType === '1') {
            window.location.href = firstLink;
        } else {
            window.location.href = visitLink+'?patient_id='+patientId;
        }
    });
    // 编辑病历 点击按钮  end

    //打印病历  点击按钮  start
    $('#caseListBox').delegate('.printCase', 'click', function () {
        var patientId = $(this).attr('data-patient');   //获取病人id
        var editRecordId = $(this).parent().parent().find('.visit-type select').val();  //获取要修改的病历ID
        var visitType = $(this).parent().parent().find('.visit-type select').find('option:selected').attr('data-type');  //获取要修改的是首诊  复诊  中医首诊 还是中医复诊
        var caseTitle = $(this).parent().parent().find('.visit-type select').find('option:selected').html();
        $('#printModel #myModalLabel').html(caseTitle);
        $('#printModel #modelEditCase').attr('data-patient', patientId);
        $('#printModel #modelEditCase').attr('data-record', editRecordId);
        $('#printModel #modelEditCase').attr('data-type', visitType);
        $.get('/manage/record/print/show', {record_id: editRecordId}, function (data) {
            if (data.code === 40100) {
                aClick()
            } else {
                $('#printArea').html(data);
            }
        });
    });
    //打印病历  点击按钮  end

    //病历列表行  点击弹出打印查看  start
    var Mouse = {
        x: 0,
        y: 0,
        result: '',
        mousedown: function (event) {
            this.y = event.clientY;
            this.x = event.clientX;
        },
        mouseup: function (event) {
            if (event.clientX != this.x || event.clientY != this.y) {
                this.result = 'slide';
            } else {
                this.result = 'click';
            }
        }
    };
    $('#caseListBox').delegate('.printTd', 'mousedown', function (e) {
        Mouse.mousedown(e);
    });
    $('#caseListBox').delegate('.printTd', 'mouseup', function (e) {
        Mouse.mouseup(e);
        if (Mouse.result == 'click') {
            $(this).parent().find('.printCase').click();
        }
    });
    //病历列表行  点击弹出打印查看  end

    //打印弹出框  编辑病历按钮  start
    $('#printModel #modelEditCase').click(function () {
        sessionStorage.removeItem('tabPage');
        sessionStorage.setItem('patient_id', $(this).attr('data-patient'));
        sessionStorage.setItem('record_id', $(this).attr('data-record'));
        var visitType = $(this).attr('data-type');
        var firstLink = $('#first_case').val();
        var visitLink = $('#visit_case').val();
        if (visitType == 2 || visitType == 4 || visitType == 0) {
            window.location.href = visitLink;
        } else if (visitType == 1 || visitType == 3) {
            window.location.href = firstLink;
        }
    });
    //打印弹出框  编辑病历按钮  end
    //打印弹出框  打印病历按钮  start
    $('#printModel #modelPrintCase').click(function () {
        var data = caseListData;
        var bdhtml = window.document.body.innerHTML;//获取当前页的html代码
        // bdhtml=printModel.html();//获取当前页的html代码
        var startStr = "<!--startprint-->";//设置打印开始区域
        var endStr = "<!--endprint-->";//设置打印结束区域

        var printHtml = bdhtml.substring(bdhtml.indexOf(startStr) + startStr.length, bdhtml.indexOf(endStr));//从标记里获取需要打印的页面

        window.document.body.className = 'container-fluid printView';
        window.document.body.innerHTML = printHtml;//需要打印的页面
        window.print();

        printpage();
        //window.document.bodyeagfsdgsdfgsdfgsdfgjjjjjjjjj
    });

    function printpage() {
        setTimeout(function () {
            window.location.reload();
        }, 500)

    }

    //打印弹出框  打印病历按钮  end

    //打印弹出框  打印区域设置  start
    $('#printModel .printLocation input').click(function () {
        var val = $(this).val();
        if (val === 'right') {
            $('#printArea').css('padding', '12mm 0mm 30mm 20mm');
        } else if (val === 'center') {
            $('#printArea').css('padding', '12mm 20mm 30mm 20mm');
        } else if (val === 'left') {
            $('#printArea').css('padding', '12mm 20mm 30mm 0');
        }
    });
    //打印弹出框  打印区域设置  end

    $('#printModel #exportWord').click(function () {
        $("#printArea").wordExport();
    });

    // 页码函数方法  start
    function page(id, data, fun, param) {
        var totalPages = Math.ceil(data.pagination.total / data.pagination.per_page);
        $('#' + id).jqPaginator({
            totalPages: totalPages,
            visiblePages: 10,
            currentPage: data.pagination.current_page,
            first: '',
            last: '',
            onPageChange: function (e) {
                param.page = e;
                fun(param);
            }
        })
    }// 页码函数方法  end

    //获取医院⬇
    // $("#hospitalSelect").bind('focus',function(){
    if ($("#hospitalSelect").length > 0) {
        if ($("#hospitalSelect").find("option").length <= 1) {
            ajax('get', '/manage/hospital/list?type=1', {}, function (data) { //加上type为1的是为了过略中医医院
                if (data.code == 10000) {
                    var html = '';
                    $.each(data.data, function (k, v) {
                        html += '<option value="' + v.id + '">' + v.name + '</option>'
                    });
                    $("#hospitalSelect").html('<option value="">全部</option>' + html);
                } else {
                    alertModel('温馨提示', '获取医院失败！')
                }
            })
        }
    }

    // });


    function disableControl() {
        if ($("#hospitalSelect").val() == '') {
            $("#doctorSelect").attr('disabled', 'disabled');
        } else {
            $("#doctorSelect").removeAttr('disabled');
        }
    }

    function doctorAjax(ID) {
        "use strict";
        if (ID) {
            ajax('get', '/manage/doctor/getList/byHospital', {hospital_id: $("#hospitalSelect").val()}, doctorBack)

        } else {
            ajax('get', '/manage/doctor/getList/byHospital', {}, doctorBack)
        }

    }

    function doctorBack(data) {
        "use strict";
        if (data.code == 10000) {
            var html = '';
            $.each(data.data, function (k, v) {
                html += '<option value="' + v.id + '">' + v.name + '</option>'
            });
            $("#doctorSelect").html('<option value="">全部</option>' + html);
        } else {
            $.alert('获取医生失败！')
        }
    }

    if ($("#UserType").val() == '1'||$("#UserType").val() == '3'||$("#UserType").val() == '4') {//平台管理员  、 区域管理员
        disableControl();
        $("#hospitalSelect").unbind().bind('change', function () {
            disableControl();
            doctorAjax($("#hospitalSelect").val())//获取医生，传递医院ID
        });
    } else if($("#UserType").val() == '0'){//医院管理员
        doctorAjax()
    }else{

    }


    //病历列表查询搜索  start
    $('#caseListSearch').click(function () {
        caseListData['wear'] =  Number($('#DynamicBloodGlucoseSelect').val());

        var inputList = $('#search_param').find('.search_value');
        for (var i = 0; i < inputList.length; i++) {
            var key = $(inputList[i]).attr('data-name');
            caseListData[key] = $(inputList[i]).val().trim();
            caseListData.page = 1;

        }
        // var reg = /^([\u4E00-\uFA29]*[a-z]*[A-Z]*)+$/;
        var reg = /^([\u4E00-\uFA29]*[0-9]*[a-z]*[A-Z]*)+$/;//V15 姓名可以包含数字
        if ((reg.test($('#search_param').find('input[data-name="name"]').val().trim())) && (chkstrlen($('#search_param').find('input[data-name="name"]').val().trim()) <= 16)) {
            getCaseList(caseListData);
        } else {
            $.alert({
                title: '温馨提示',
                body: '姓名长度不能超过16个字符！',
                transition: true
            });
        }
    });
    //病历列表查询搜索  end

    //点击查看血糖  监测血糖  start
    $('.caseList-table').delegate('.viewBlood', 'click', function () {
        var record_id = $(this).parent().parent().find('.visit-type select').val();  //获取要修改的病历ID
        var id = this.getAttribute("data-id");
        if (record_id) {
            // window.open("http://www.365tang.cn/datacenter/firstdetail?id=" + record_id);//老后台
            // location.pathname = "/manage/record/fbg";
            // $.ajax("get","/manage/record/items",{record_id:record_id},function(){});
            window.open('/manage/bloodsugar?record_id=' + id + '&type=1');//新后台
            // $.cookie('SUITANG_BG', 'FBG');
        } else {
            alertModel('', '您还未创建病历，请先创建！');
        }
    });
    //点击查看血糖  监测血糖  end

    //点击查看血糖  动态血糖  start
    $('.caseList-table').delegate('.dynamicBlood', 'click', function () {
        var id = this.getAttribute("data-id");  //获取要修改的病历ID
        if (id) {
            // window.open("http://www.365tang.cn/login/getBlood?id=" + id);//老后台
            // window.open("http://www.365tang.cn/login/getBlood?id=" + id);
            // $.cookie('SUITANG_BG', 'DBG');
            window.open('/manage/bloodsugar?record_id=' + id + '&type=2');//新后台

        } else {
            alertModel('', '您还未创建病历，请先创建！');
        }
    });
    //点击查看血糖  监测血糖  end



    /* v14 医生、医院管理员、区域管理员 都只能修改和添加自己所属（并非管理）医院的病例⬇ */
    console.log(window.User.hospital.name);
    console.log(window.User.hospital.id);

    /* v14 医生、医院管理员、区域管理员 都只能修改和添加自己所属（并非管理）医院的病例⬆ */

});

function ajax(type, url, str, callback1, callback2) {
    str == undefined && (str = "");
    $.ajax({
        type: type + "",
        url: url + "",
        data: str,
        dataType: "json",
        success: function (data) {
            !(callback1 == undefined) && callback1(data);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            !(callback2 == undefined) && callback2();
            // console.log(XMLHttpRequest);
            console.log(errorThrown);
            console.log(textStatus);
            console.log(XMLHttpRequest.status);
            console.log(XMLHttpRequest.readyState);
            console.log(XMLHttpRequest.responseText);
        }
    });
}
//confirm 弹窗  start
function confirmModel(title, body, okBtn, cancelBtn, okHidden) {
    if (!title) {
        title = '温馨提示';
    }
    if (!body) {
        body = '确定要删除吗？';
    }
    if (!okBtn) {
        okBtn = '确定';
    }
    if (!cancelBtn) {
        cancelBtn = '取消';
    }
    $.confirm({
        title: title,
        body: body,
        okBtn: okBtn,
        cancelBtn: cancelBtn,
        transition: true,
        okHidden: function () {
            okHidden();
        }
    });
} //confirm 弹窗  end

function alertModel(title, body) {
    if (!title) {
        title = '温馨提示';
    }
    if (!body) {
        body = '出错了，再来一次！';
    }
    $.alert({
        title: title,
        body: body,
        transition: true
    });
}